/**
 * @FileName Subject.java
 * @Package com.designMode.observer
 * -------------------------------------
 * @function Please write description of function
 * @Date 2016-1-19 上午9:56:29
 * -------------------------------------
 * Copyright (c) 2016,顾博君 All Rights Reserved.
 */
package com.designMode.observer;

import java.util.Vector;

/**
 * @author 顾博君
 * @ClassName Subject
 * @Date 2016-1-19 上午9:56:29
 * @Function 被观察者
 */
public abstract class Subject {
    /**
     * 定义一个观察者数组
     */
    private Vector<Observer> obsVector = new Vector<>();

    /**
     * 添加观察者
     *
     * @param o 观察者
     */
    public void addObserver(Observer o) {
        obsVector.add(o);
    }

    /**
     * 删除观察者
     *
     * @param o 观察者
     */
    public void delObserver(Observer o) {
        obsVector.remove(o);
    }

    /**
     * 把被观察者的动作分发到所有的观察者
     */
    public void notifyObservers() {
        for (Observer o : obsVector) {
            o.update();
        }
    }
}
